<!-- 是否连续录入复选框 -->
<p style="text-align: center;">
    <!-- 只在新增书籍的时候显示 -->
    <input type="checkbox" id="isContinuous" checked="checked" />连续录入
</p>
<!-- 生成分类结构 -->
<script src="/assets/javascripts/generateCategoryHierarchy.js"></script>
<script>
    // 如果传入了 id 那么就是修改书籍，否则就是添加书籍
    var bookId = getParams().id;
    var isModify = bookId ? true : false;
    if (!isModify) {
        // 新增书籍
        bookId = 0;
    } else {
        // 修改书籍
        $("#isContinuous").parent().remove();
    }

    // 点击提交按钮
    function btnSubmitClick() {
        formSubmit({
            type: 'POST',
            url: '/book/detail',
            data: { id: bookId },
            success: function (data) {
                console.log(data);
                swal(isModify ? "修改成功！" : "添加成功！").then(function () {
                    if (!isModify && document.getElementById("isContinuous").checked) {
                        location.reload();
                    } else {
                        // 回到书籍管理页
                        location.href = "<%= pageUrl %>../";
                    }
                });
            }
        });
    }

    // 如果是修改书籍，则需要获取书籍详情
    async function getBookDetail(bookId) {
        var responseData = await getRequest("/book/get", { id: bookId });
        var axiosData = responseData.data;
        var status = axiosData.status;
        var data = axiosData.data;
        if (status === "success") {
            console.log(data)
            return data;
        } else {
            swal(`出错啦！${data.errMsg} (错误码: ${data.errCode})`);
            // 回到书籍管理页
            location.href = "<%= pageUrl %>../";
        }
    }

    async function getControlsProfile(getValidateUtils) {

        // 获取分类列表
        var categoryOptions = [];

        var responseData = await getRequest("/category/list");
        var axiosData = responseData.data;
        var status = axiosData.status;
        var data = axiosData.data;
        if (status === "success") {
            // console.log(data)
            hierarchyData = generateCategoryHierarchy(data);
            console.log(hierarchyData);
            function render(category) {
                categoryOptions.push({
                    "tag": "option",
                    "attr": { "value": category.id },
                    "innerHTML": `${"&nbsp;".repeat((category.level - 1) * 8)}${category.name}`,
                })
                for (let i = 0; i < category.children.length; i++)
                    render(category.children[i]);
            }
            render({ children: hierarchyData });
            categoryOptions.shift(); // 删除数组中的第一个元素
        } else {
            swal(`出错啦！${data.errMsg} (错误码: ${data.errCode})`);
        }

        console.log(categoryOptions);

        // 修改书籍: 获取书籍详情
        var bookDetail = {};
        if (isModify) {
            bookDetail = await getBookDetail(bookId);
        } else {
            console.log("新增书籍无需获取书籍详情");
        }

        return [
            // 【模板】
            // {
            //     // 必填
            //     "tag": "input",
            //     "attr": {
            //         // 可选
            //         "id": "",
            //         "name": "", // 用于 POST 提交
            //         "class": "",
            //         "style": "",
            //         "placeholder": "电子书的名称",
            //     },
            //     "label": {
            //         "value": "书本名称",
            //     },
            //     "required": true, // 是否必填

            //     // 可选
            //     "innerHTML": "",
            //     "children": [
            //         {
            //             "tag": "option",
            //             "attr": { "value": "1" },
            //             "innerHTML": "选项1",
            //         },
            //         {
            //             "tag": "option",
            //             "attr": { "value": "2" },
            //             "innerHTML": "选项2",
            //         },
            //     ],
            //     "validate": function (value) {
            //         var validate = validateUtils.setValue(value)
            //             .validate.notNull(value, "书本名称不能为空，请输入书本名称")
            //             .validate.notNull(value, "书本名称不能超过 50 个字符")
            //             .validate.notNull(value, "书本名称不能包含特殊字符")
            //             .result();
            //         console.log(validate);

            //         if (validateUtils.isEmpty(value)) {
            //             result = false;
            //             msg = "不能为空";
            //         }
            //         return { result: result, msg: msg };
            //     }
            // },
            // 必须设置 id, name
            // 只有设置了 id 才会使用 validate 校验取值
            {
                "tag": "input",
                "attr": {
                    "id": "bookName",
                    "name": "bookName",
                    "placeholder": "电子书的名称",
                    "value": bookDetail.bookName || "",
                },
                "label": {
                    "value": "书本名称",
                },
                "required": true, // 是否必填
                "innerHTML": "",
                "validate": (val) => getValidateUtils().setValue(val)
                    .notString("传入的值为非字符串类型")
                    .notEmptyAfterTrim("书本名称不能为空，请输入书本名称")
                    .length(0, 250, "书本名称不能超过 250 个字符")
                    .isValid()
            },
            {
                "tag": "input",
                "attr": {
                    "id": "author",
                    "name": "author",
                    "placeholder": "电子书的作者",
                    "value": bookDetail.author || "",
                },
                "label": {
                    "value": "作者姓名",
                },
                "required": false, // 是否必填
                "innerHTML": "",
                "validate": (val) => getValidateUtils().setValue(val)
                    .notString("传入的值为非字符串类型")
                    .length(0, 250, "作者姓名不能超过 250 个字符")
                    .isValid()
            },
            {
                "tag": "textarea",
                "attr": {
                    "id": "description",
                    "name": "description",
                    "style": "height:100px;",
                    "placeholder": "电子书的简介",
                },
                "label": {
                    "value": "书籍简介",
                },
                "required": false, // 是否必填
                "innerHTML": bookDetail.description || "",
                "validate": (val) => getValidateUtils().setValue(val)
                    .notString("传入的值为非字符串类型")
                    .length(0, 5000, "书籍简介不能超过 5000 个字符")
                    .isValid()
            },
            {
                "tag": "select",
                "attr": {
                    "id": "language",
                    "name": "language",
                    "placeholder": "书籍语言",
                    "value": bookDetail.language || "Chinese",
                },
                "label": {
                    "value": "语言",
                },
                "required": true, // 是否必填
                "children": [
                    {
                        "tag": "option",
                        "attr": { "value": "Chinese" },
                        "innerHTML": "中文",
                    },
                    {
                        "tag": "option",
                        "attr": { "value": "English" },
                        "innerHTML": "英文",
                    },
                    {
                        "tag": "option",
                        "attr": { "value": "" },
                        "innerHTML": "其他",
                    },
                ],
                "innerHTML": "",
                "validate": (val) => getValidateUtils().setValue(val)
                    .notNull("书籍语言传入值错误")
                    .isValid()
            },
            {
                "tag": "input",
                "attr": {
                    "id": "publishingHouse",
                    "name": "publishingHouse",
                    "placeholder": "出版社",
                    "value": bookDetail.publishingHouse || "",
                },
                "label": {
                    "value": "出版社",
                },
                "required": false, // 是否必填
                "innerHTML": "",
                "validate": (val) => getValidateUtils().setValue(val)
                    .notString("传入的值为非字符串类型")
                    .length(0, 50, "出版社不能超过 50 个字符")
                    .isValid()
            },
            {
                "tag": "input",
                "attr": {
                    "id": "copyright",
                    "name": "copyright",
                    "placeholder": "来源信息 & 版权信息",
                    "value": bookDetail.copyright || "",
                },
                "label": {
                    "value": "来源(版权)",
                },
                "required": false, // 是否必填
                "innerHTML": "",
                "validate": (val) => getValidateUtils().setValue(val)
                    .notNull("来源(版权)传入值错误")
                    .isValid()
            },
            {
                "tag": "select",
                "attr": {
                    "id": "categoryId",
                    "name": "categoryId",
                    "value": (bookDetail.category && bookDetail.category.id) ? bookDetail.category.id : "",
                },
                "label": {
                    "value": "书籍分类",
                },
                "required": true, // 是否必填
                "children": categoryOptions,
                "validate": (val) => getValidateUtils().setValue(val)
                    .notEmpty("请选择书籍分类")
                    .notStringNumber("书籍分类传入值错误")
                    .isValid()
            },
        ];
    }
</script>